#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
======================================
@Project ：django_init_Project 
@File    ：middleware01.py
@IDE     ：PyCharm 
@Author  ：唐
@Date    ：2023/7/18 21:04 
@用途     ：todo
@参考博客   ：https://www.cnblogs.com/wxlxl/p/17506478.html
======================================
"""
import json

from django.http import HttpResponse
# 1、继承了MiddlewareMixin类
from django.utils.deprecation import MiddlewareMixin
#
# 2、可能做了一些初始化准备__init__
#
# 3、拥有process_request和process_response函数
# process_request需要传入request参数，没返回值
# process_response需要传入request和response两个参数，必须返回response

"""
process_request
这个方法是用于处理请求的，在网关处理好request之后，路由层处理路由之前，依注册顺序执行。
需要定义request形参接收请求，对请求做一系列判断。
如果process_request返回HttpResponse对象，则不会再执行后续的中间件以及路由等程序，直接将返回值传入process_response。

process_response
这个方法是用于处理响应的，在视图层返回HttpResponse对象的响应后，网关层处理响应之前，
由各中间件依注册顺序自下而上执行。
需要定义request、response形参接收请求和响应，对响应做一定的处理。
返回值一定要将response传递走或者返回其他的HttpResponse对象
"""

class MidWare01(MiddlewareMixin):
    def process_request(self, request):
        print("这是MidWare01的request")

    def process_response(self, request, response):
        print(f"这是MidWare01的response, {response.content.decode('utf-8')}")
        return response

        # 返回值一定要将response传递走或者返回其他的HttpResponse对象
        # 是先请求了views视图逻辑，返回数据是到了这里，然后这里最后再执行
        # json_res = json.loads(response.content.decode("utf-8"))
        # json_res["new_data"] = "中间件01处理response结果"
        # return HttpResponse(f"{json_res}")














